package cn.iocoder.yudao.module.hs.service.device;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.hs.controller.admin.device.vo.DevicePageReqVO;
import cn.iocoder.yudao.module.hs.controller.admin.device.vo.DeviceRespVO;
import cn.iocoder.yudao.module.hs.controller.admin.device.vo.DeviceSaveReqVO;
import cn.iocoder.yudao.module.hs.controller.admin.device.vo.DeviceTestReqVO;
import cn.iocoder.yudao.module.hs.dal.dataobject.device.DeviceDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 基站信息 Service 接口
 *
 * @author 航盛
 */
public interface DeviceService {

    /**
     * 创建基站信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDevice(@Valid DeviceSaveReqVO createReqVO);

    /**
     * 更新基站信息
     *
     * @param updateReqVO 更新信息
     */
    void updateDevice(@Valid DeviceSaveReqVO updateReqVO);

    /**
     * 删除基站信息
     *
     * @param id 编号
     */
    void deleteDevice(Long id);

    /**
     * 获得基站信息
     *
     * @param id 编号
     * @return 基站信息
     */
    DeviceDO getDevice(Long id);

    /**
     * 获得基站信息分页
     *
     * @param pageReqVO 分页查询
     * @return 基站信息分页
     */
    PageResult<DeviceRespVO> getDevicePage(DevicePageReqVO pageReqVO);

    /**
     * 根据基站ID获得基站信息
     *
     * @param code 基站ID
     * @return 基站信息
     */
    DeviceDO getDeviceByCode(String code);

    /**
     * 根据基站ID列表获得基站信息列表
     *
     * @param deviceIds 基站ID列表
     * @return 基站信息列表
     */
    List<DeviceDO> getDeviceByIds(List<String> deviceIds);

    /**
     * 强制断开连接
     * @param deviceId
     */
    void disconnect(String deviceId);

    /**
     * 调试
     * @param testReqVO
     */
    void test(DeviceTestReqVO testReqVO);

    /**
     * 获得基站扫描到的RFID
     * @param deviceId
     * @return
     */
    List<String> getRfidList(String deviceId);
}
